雖然有在玩Arduino跟ESP32,但是這些工具大都做好給我們直接使用,所以想挑戰一個難一點的MCU(STM32系列)作為入門RTOS跟更深刻了解MCU相關通訊協定的起始點,畢竟是邊看線上課程邊寫筆記的,大綱應該就是課程給定的,整理跟未來回看也比較記得~
畢竟是最後一天才報名(前面跑去刷題了XD),那今天就開始寫吧~
Real Time 並不是代表完成該任務的速度有多快,而是保證在給定的時間內,一定會完成任務(聽起來就是個超優秀的員工XD)
以下為Real Time system的英文定義:
A real time system is one in which the correctness of computations not only depends upon the logical correctness of the computation, but also upon the time at which the result is produced. if the timing constraints are not met, system failure is said to have occured.
Real Time有分為Soft Real Time 跟 Hard Real Time:
RTOS是一種專門設計來運行具有精確時間要求和高度可靠性的應用程式的作業系統,它的設計目標是保證每個關鍵任務能在指定的時間範圍內完成,並提供對系統事件的快速回應
特徵:
GPOS(General-Purpose Operating System),就是我們一定常用的作業系統(Linux、Windows)
特性 | RTOS | GPOS |
---|---|---|
Task Scheduling | 優先權調度,搶佔式 | 時間片輪轉,多級隊列 |
Latency | 低延遲,可預測 | 高延遲,不可預測 |
Priority Inversion處理 | 優先權繼承協議處理 | 通常不處理 |
Throughput | 低吞吐量,專注即時性 | 高吞吐量,專注資源利用率 |
p.s 在Throughput上,雖然RTOS表現通常較GPOS差,,因為RTOS專注在完成優先級較高的任務,而非最大化Throughput,但這不太代表RTOS在Throughput的表現差勁,因為通常RTOS的任務數量較少,而GPOS的任務數量較多且繁雜,所以比較準確地來說,RTOS仍可以提供不錯的總體Throughput,但會因為即時性犧牲Throughput就是了~
優先權反轉Priority Inversion:
是一種在多個程式任務執行時發生的現象,當高優先級的任務被迫等待低優先級的任務完成,導致高優先級的任務延遲,發生的流程: